AWS BackupでDynamoDBを日次バックアップ&リストアしてみた
まいど、大阪の市田です。 今回は、AWS BackupでDynamoDBをバックアップ&リカバリして気になる点を確認してみました。
これまでDynamoDBのバックアップとしては、オンデマンドバックアップ、継続的バックアップが存在していましたが、35日以上過去のデータを保存する場合は、Lambdaなどを使ってオンデマンドバックアップを実行する必要がありました。
- DynamoDB のポイントインタイムリカバリ - Amazon DynamoDB
- バックアップおよび復元: 仕組み - Amazon DynamoDB
- 【新機能】DynamoDB On-Demand Backup and Restoreをお試し #reinvent | DevelopersIO
- DynamoDBで継続的バックアップとポイントインタイムリカバリーが可能になりました | DevelopersIO
ところがAWS Backupを使うと、Lambdaを使わずに簡単に定期バックアップを取得することができるようになりました。 早速試してみたいと思います。
DynamoDBテーブル作成
今回はバージニア北部リージョンで、下記のようなDynamoDBテーブルを作成します。 (2019年2月時点で、AWS Backupは東京リージョン未対応です。)
下記のように、TTLやAutoScalingを設定したテーブルを用意します。
バックアップ設定はデフォルトの「無効」のままとします。
タグは下記のように設定します。下記のタグを指定してバックアップしたいと思います。
- キー:backup
- 値:aws-backup
AWS Backupの設定
次に、AWS Backupにてバックアッププランを作成します。
今回は新規にプランを作成します。
日次でバックアップしたいので下記のようにDaily
で設定します。
バックアップウィンドウの指定は、日本時間で「AM01:30に開始」としました。
続けてVaultを作成します。KMSはデフォルトのものを利用しています。
作成したVaultを指定して、バックアッププランを作成します。
バックアップ対象のアサイン
作成したプランにバックアップ対象リソースを関連付けます。
リソースのアサインはタグで指定してみました。対象のDynamoDBに付けたタグを設定します。
バックアップ取得
指定した時間帯になるまで待機します。該当ジョブのStatusがCompletedになればバックアップ完了です。
Vaultの画面でもバックアップできていることが確認できます。
DynamoDBのコンソール上でも、バックアップが取得されていることが分かります。 (下記では、日本時間の午前 01:30と08:30に2度取得しています)
リストア時の注意点
AWS BackupによるDynamoDBのバックアップでは、従来からある「オンデマンドバックアップと復元」が実行される形になります。
そのため、下記の設定については復元されず、リストア後に再設定が必要となる点に注意しましょう。 後ほど実際にリストアして確認したいと思います。
- Auto scaling policies
- IAM policies
- Cloudwatch metrics and alarms
- Tags
- Stream settings
- Time to Live (TTL) settings
再設定が必要になる項目については、予めAWS CLIなどで設定できるように用意しておくと、リストア作業も楽になるかと思います。
参考ページ:
- restore-table-from-backup — AWS CLI 1.16.104 Command Reference
- 【新機能】DynamoDB On-Demand Backup and Restoreをお試し #reinvent | DevelopersIO
リストア
それでは、取得したバックアップからDynamoDBテーブルをリストアしてみます。 AWS Backupの画面のVaultからリストアしたいバックアップを選択して「Restore」をクリックします。
リストアするテーブル名を入力してリストアを実行します。AutoScalingは無効になっていることが分かります。 (同じテーブル名を指定するとリストアジョブが失敗します。)
リストアのジョブが完了するまで気長に待ちます。
なお、テーブルのリストア(復元)にかかる時間はテーブルサイズとは直接的な関係性はありません。つまり、サイズが大きくても小さなサイズと同じくらいの時間で完了できることもあります。
ここでは詳細については触れないので、下記ドキュメントを参照いただければと思います。 バックアップおよび復元: 仕組み - Amazon DynamoDB
StatusがCompletedになればリストア完了です。
DynamoDBを確認すると最初のデータを保持した状態で、テーブルがリストアできています。
やはりTTLやAutoScalingは設定されていません。
タグも設定されていない状態になります。
最後に
AWS Backupにより35日以上の期間でも定期的にバックアップ取得が簡単にできるようになりました。 再設定する項目がある点に注意しつつ、ぜひ利用いただければと思います。
以上です。